配置 Docker 国内镜像加速
Docker Hub (hub.docker.com) 是 Docker 的默认公共镜像仓库,提供了大量官方镜像和社区镜像。但国内访问 Docker Hub 速度较慢,拉取镜像时经常超时。本节介绍如何配置国内镜像加速源来解决这个问题。
Docker Hub 简介
Docker Hub 上的每个镜像页面包含以下信息:
- Tags(标签) -- 列出可用的版本(如
8.0、latest) - Dockerfile -- 镜像的构建配置文件,展示完整的构建过程
- 使用说明 -- 包含环境变量、端口、数据卷等配置参数
理解 Dockerfile 的分层构建
Dockerfile 中的每条指令都会产生一个镜像层(Layer),这些层叠加起来构成最终镜像。以 MySQL 官方镜像为例:
# 基础镜像层
FROM oraclelinux:9-slim
# 添加仓库和安装包(新增一层)
RUN microdnf install ...
# 设置环境变量(新增一层,但几乎不占空间)
ENV MYSQL_MAJOR=8.0
# 拉取 MySQL 安装包(新增一层)
ADD mysql-8.0.xx-linux-glibc2.17-x86_64.tar.xz /usr/local/
# 配置初始化脚本(新增一层)
COPY docker-entrypoint.sh /usr/local/bin/
# 暴露端口(元数据层)
EXPOSE 3306 33060
# 设置入口命令
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mysqld"]
dockerfile
每一层都是只读的,镜像的分层设计使得不同镜像可以共享相同的基础层,从而节省存储空间和下载带宽。
配置镜像加速
国内常用加速源
| 加速源 | 地址 | 说明 |
|---|---|---|
| 阿里云 | https://<你的ID>.mirror.aliyuncs.com | 需注册阿里云账号获取专属地址,推荐使用 |
| 中科大 | https://docker.mirrors.ustc.edu.cn | 中国科学技术大学提供 |
| DaoCloud | https://docker.m.daocloud.io | DaoCloud 提供 |
| 南京大学 | https://docker.nju.edu.cn | 南京大学镜像站 |
推荐使用阿里云加速服务。个人实践下来,阿里云的稳定性和速度都比较好。
配置步骤(Ubuntu/CentOS)
第一步:创建配置目录
sudo mkdir -p /etc/docker
bash
/etc/docker/ 是 Docker 守护进程的配置文件目录。
第二步:创建 daemon.json 配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://<你的ID>.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
bash
daemon.json 是 Docker 守护进程(dockerd)的主配置文件。registry-mirrors 数组中可以配置多个加速地址,Docker 会按顺序尝试。
可以同时配置多个加速源作为备选,Docker 会自动切换。
第三步:验证配置文件
cat /etc/docker/daemon.json
bash
确认内容格式正确,JSON 语法无误。
第四步:重载配置并重启 Docker
# 重载守护进程配置
sudo systemctl daemon-reload
# 重启 Docker 服务
sudo systemctl restart docker
bash
或者使用 service 命令(部分系统):
sudo service docker restart
bash
验证加速效果
配置完成后,拉取镜像时会自动走加速通道。测试拉取速度:
# 拉取 Redis 镜像
docker pull redis
bash
使用加速源后,下载速度通常可以达到 10MB/s 以上,一个几百 MB 的镜像几十秒即可下载完成。
拉取大型镜像(如 GitLab CE,约 900MB)同样可以看到明显的速度提升:
docker pull gitlab/gitlab-ce
bash
阿里云加速服务申请流程
- 注册并登录 阿里云控制台
- 搜索 "容器镜像服务" 或 "镜像加速"
- 在左侧菜单中找到 镜像加速器
- 复制页面中显示的专属加速地址(格式为
https://<你的ID>.mirror.aliyuncs.com) - 页面下方会自动生成针对不同操作系统的配置命令,直接复制执行即可
macOS / Windows Docker Desktop 配置
使用 Docker Desktop 的用户,可以通过图形界面配置:
- 打开 Docker Desktop -> Settings(设置)
- 选择 Docker Engine
- 在 JSON 配置中添加
registry-mirrors字段:
{
"registry-mirrors": [
"https://<你的ID>.mirror.aliyuncs.com"
]
}
json
- 点击 Apply & Restart
配置文件完整示例
{
"registry-mirrors": [
"https://<你的ID>.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
json
log-opts配置用于限制 Docker 日志文件的大小和数量,防止磁盘被日志写满。storage-driver指定存储驱动,overlay2 是当前推荐的方案。
小结
| 步骤 | 命令 |
|---|---|
| 创建配置目录 | sudo mkdir -p /etc/docker |
| 写入配置文件 | sudo tee /etc/docker/daemon.json |
| 重载配置 | sudo systemctl daemon-reload |
| 重启 Docker | sudo systemctl restart docker |
| 验证拉取速度 | docker pull redis |
| 知识点 | 要点 |
|---|---|
| Docker Hub | 默认公共镜像仓库,包含官方和社区镜像 |
| Dockerfile 分层 | 每条指令产生一层,层叠加构成完整镜像 |
| 加速源选择 | 推荐阿里云(稳定),可配置多个作为备选 |
| 配置文件位置 | /etc/docker/daemon.json |
| 配置后操作 | 必须重载守护进程配置并重启 Docker 才能生效 |
↑